#include "C_Sprite.h"

/////////////////////////////////////////////////////////////////////////////
//	CONSTRUCTOR
/////////////////////////////////////////////////////////////////////////////
C_Sprite::C_Sprite()
{
	m_texture = NULL;
	m_sprite = new sf::Sprite();
	//m_sprite->setColor(sf::Color(255, 0, 50, 255));
}

/////////////////////////////////////////////////////////////////////////////
//	DESTRUCTOR
/////////////////////////////////////////////////////////////////////////////
C_Sprite::~C_Sprite()
{
}


/////////////////////////////////////////////////////////////////////////////
//	RENDER
/////////////////////////////////////////////////////////////////////////////
void C_Sprite::render()
{
	m_rWindow->pushGLStates();
	m_rWindow->draw(*m_sprite);
	m_rWindow->popGLStates();
}


/////////////////////////////////////////////////////////////////////////////
//	UPDATE
/////////////////////////////////////////////////////////////////////////////
void C_Sprite::update()
{
}

/////////////////////////////////////////////////////////////////////////////
//	LOAD FROM FILE
/////////////////////////////////////////////////////////////////////////////
void C_Sprite::loadFromFile(std::string filename)
{
	//if we already load file
	if (m_texture != NULL) m_texture->unbind();

	//file is exist
	if ((m_texture = C_Texture::m_TextureMngr->find(filename)) == NULL)
	{
		m_texture = new C_Texture();
		m_texture->loadFromFile(filename);
	}

	//sf::Image img = m_texture->m_texture.copyToImage();
	//sf::Color soursColor(200, 1, 200, 255);
	//sf::Color destColor(40, 150, 40, 255);
	//for (int x = 0; x < img.getSize().x; x++)
	//{
	//	for (int y = 0; y < img.getSize().y; y++)
	//	{
	//		if (img.getPixel(x, y) == soursColor)
	//		{
	//			img.setPixel(x, y, destColor);
	//		}
	//	}
	//}
	//m_texture->m_texture.loadFromImage(img);

	//bind with texture source
	m_texture->bind(this);
}

/////////////////////////////////////////////////////////////////////////////
//	SET TEXTURE
/////////////////////////////////////////////////////////////////////////////
void C_Sprite::setTexture(sf::Texture *t)
{
	if (m_sprite == NULL) return;
	m_sprite->setTexture(*t);
}


